Given the current state of telephony technology, telephone calls over modern telecommunications networks are relatively reliable in terms of speed in completing a call connection, meeting quality of service requirements, and maintaining a call connection during the course of a conversation. The last category, maintaining a call connection, is provided in large part by building redundancy into the network, especially in the call processing platform. The call processing platform generally controls the set-up and shut-down of a call connection, and ensures that billing for a call is accurately maintained. This redundancy in the call processing platform ensures that a call connection is maintained even if there is a hardware failure in the equipment used to establish the call connection, and is sometimes referred to as "fault tolerant call processing."
Conventional technology and methods to build redundancy in a call processing platform, however, are less than desirable for a number of reasons. For example, a call processing platform typically has a call control computer that is responsible for implementing call flow by coordinating and assigning the resources of the other platform components, such as a switching matrix, voice response computers, and data base computers. Given its central function, the operation of the call control computer is extremely important in maintaining a call connection. Consequently, the call control computer is typically a specialized computer designed with redundant hardware components, such as a back-up microprocessor, memory, power supply, and so forth. This specialized call control computer, however, is very expensive. In addition, a single call control computer, even with redundant hardware, is susceptible to common mode failure. Common mode failure occurs when a single failure of a system component causes total system failure to occur. Further, the specialized call control computer is difficult to upgrade and maintain.
In an attempt to avoid the above problems, some call processing platforms utilize multiple call control computers, rather than a single dedicated call control computer with redundant hardware. The use of multiple call control computers, however, poses a new set of problems. Typically, one of the call control computers is designated as an active call control computer, with a second designated a standby call control computer. The active call control computer actively controls call processing functions for the call processing platform, while the standby call control computer stands ready to take over control of the call processing platform in the event the active call control computer experiences a hardware or software failure. To ensure that calls are not dropped when the active call control computer fails, it becomes necessary to duplicate all call processing data to the standby call control computer. Further, it becomes necessary to implement a monitoring scheme to monitor the active call control computer, and determine when it becomes necessary to switch over to the standby call controller.
Conventional techniques exist for duplicating call processing data from an active call control computer to a standby call control computer, such as the technique disclosed in a paper authored by Rachid Guerraoui et al. Titled "Software Based Replication for Fault Tolerance," Computer Journal, IEEE, April 1997. The technique described in the Guerraoui paper, however, is unsatisfactory for a number of reasons. For example, the Guerraoui paper fails to disclose a monitoring and switch over scheme that minimizes dropped calls in the case of failure of the active call control computer. Further, the Guerraoui paper fails to disclose a means for synchronizing the call processing data across the call processing platform.
In addition, the Guerraoui paper fails to teach how to ensure that the standby computer has accurate records regarding static call data. Typically, a call processing platform requires two types of data to process a call: (1) dynamic call data; and (2) static call data. Dynamic call data is information about the caller or call connection that changes for every call. For example, a destination telephone number is considered dynamic call data since it typically changes from call to call. Static call data is information about a caller that is relative stable, that is, it does not change on a call by call basis. An example of static call data would be a billing address for a caller, or perhaps a Personal Identification Number. The Guerraoui paper fails to discuss the duplication of static call data to the standby call control computer.
In view of the foregoing, it can be appreciated that a substantial needs exists for a fault tolerant call processing method and apparatus that solves the above-discussed problems.